//
//  Structs.swift
//  Documentation
//
//  Created by Toj on 8/9/23.
//

import QuartzCore

public struct CAAnimationCalculationMode : Hashable, Equatable, RawRepresentable, @unchecked Sendable {

    public init(rawValue: String)
}
public struct CAAnimationRotationMode : Hashable, Equatable, RawRepresentable, @unchecked Sendable {

    public init(rawValue: String)
}

/// 指定过渡效果的类型
public struct CATransitionType : Hashable, Equatable, RawRepresentable, @unchecked Sendable {

    public init(rawValue: String)
}
public struct CATransitionSubtype : Hashable, Equatable, RawRepresentable, @unchecked Sendable {

    public init(rawValue: String)
}

/// 表示关键帧动画的计算模式.
extension CAAnimationCalculationMode {

    
    @available(iOS 2.0, *)
    /// 线性
    public static let linear: CAAnimationCalculationMode

    
    @available(iOS 2.0, *)
    /// 离散
    public static let discrete: CAAnimationCalculationMode

    
    @available(iOS 2.0, *)
    /// 均匀
    public static let paced: CAAnimationCalculationMode

    
    @available(iOS 4.0, *)
    /// 三次贝塞尔插值
    public static let cubic: CAAnimationCalculationMode

    
    @available(iOS 4.0, *)
    /// 三次均匀贝塞尔插值
    public static let cubicPaced: CAAnimationCalculationMode
}
extension CAAnimationRotationMode {

    
    @available(iOS 2.0, *)
    /// 动画会围绕物体的锚点进行旋转, 并自动调整动画的路径, 以使旋转看起来更自然.
    /// 这意味着无论物体当前的朝向如何, 它都会以最短的路径旋转到目标的角度.
    public static let rotateAuto: CAAnimationRotationMode

    
    @available(iOS 2.0, *)
    /// 动画同样围绕物体的锚点进行旋转.
    /// 与rotateAuto不同的是, 当物体的朝向与目标角度相差180度时, 动画会以相反的方向旋转, 即沿着最长的路径旋转到目标的角度.
    /// 这种模式可以用于创建翻转动画或反向旋转效果.
    public static let rotateAutoReverse: CAAnimationRotationMode
}

extension CATransitionType {
    
    @available(iOS 2.0, *)
    /// 交叉淡化过渡(不支持过渡方向)
    public static let fade: CATransitionType

    
    @available(iOS 2.0, *)
    /// 新视图移到旧视图上面
    public static let moveIn: CATransitionType

    
    @available(iOS 2.0, *)
    /// 新视图把旧视图推出去
    public static let push: CATransitionType

    
    @available(iOS 2.0, *)
    /// 旧视图移开,显示新视图
    public static let reveal: CATransitionType
    
    /** 扩展: 需要通过 CATransitionType(rawValue: "cube") 创建
     * cube: 立方体翻滚效果
     * oglFlip: 上下左右翻转效果
     * suckEffect: 收缩效果，如一块布被抽走(不支持过渡方向)
     * rippleEffect: 滴水效果(不支持过渡方向)
     * pageCurl: 向上翻页效果
     * pageUnCurl: 向下翻页效果
     * cameraIrisHollowOpen: 相机镜头打开效果(不支持过渡方向)
     * cameraIrisHollowClose: 相机镜头关上效果(不支持过渡方向)
     */
}

extension CATransitionSubtype {

    
    @available(iOS 2.0, *)
    /// 从右侧进入
    public static let fromRight: CATransitionSubtype

    
    @available(iOS 2.0, *)
    /// 从左侧进入
    public static let fromLeft: CATransitionSubtype

    
    @available(iOS 2.0, *)
    /// 从顶部进入
    public static let fromTop: CATransitionSubtype

    
    @available(iOS 2.0, *)
    /// 从底部进入
    public static let fromBottom: CATransitionSubtype
}

